home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cbibcode.arc / ALLOCMEM.C < prev    next >
Encoding:
C/C++ Source or Header  |  1991-08-05  |  907 b   |  33 lines

  1. /* allocmem.c --- p550 */
  2. #include <stdio.h>
  3. #include <dos.h>
  4. #define DOS_PRTSTR 0x09
  5. char str[80]= "Successfully allocated memory using allocmem...\n$";
  6. main()
  7. {
  8.     union REGS xr;
  9.     struct SREGS sr;
  10.     int retval;
  11.     char far *stradd;
  12.     unsigned int segadd, size;
  13.     stradd = (char far *)(&str[0]);
  14.     printf("Enter number of paragraphs requested:");
  15.     scanf(" %u", &size);
  16.     if(size < 5) size =5; /* Need at least 5 paras */
  17.     printf("Allocating %u paragraphs of memory\n",size);
  18.     if((retval =allocmem(size, &segadd)) != -1)
  19.     {
  20.         printf("Memory allocation failed!\n");
  21.         printf("Only %d paragraphs available!\n",retval);
  22.         exit(0);
  23.     }
  24.         /* Copy string into allocated memory using movedata */
  25.     movedata(FP_SEG(stradd), FP_OFF(stradd),
  26.         segadd, 0, 80);
  27.     sr.ds = segadd;
  28.     xr.x.dx =0;
  29.     xr.h.ah = DOS_PRTSTR;
  30.     intdosx(&xr, &xr, &sr);
  31.                     /* Free memory before exiting */
  32.     freemem(segadd);
  33. }